#ifndef APP_MESSAGE_H
#define APP_MESSAGE_H

// 连接类型 枚举
typedef enum
{
    CONN_NONE,
    CONN_BT,
    CONN_LORA,
    CONN_CAN
} ConnectionType;

// 消息结构体
typedef struct
{
    ConnectionType conn_type;
    char *payload; // id和msg
    int id_len;
    int msg_len;
} Message;

/**
 * @brief 根据二进制数据初始化消息
 * @param binary 二进制数据指针
 * @param len 数据长度
 * @return 消息结构体指针
 */
Message *app_message_initByBinary(char *binary, int len);

/**
 * @brief 根据json数据初始化消息
 * @param json json数据指针
 * @param len 数据长度
 * @return 消息结构体指针
 */
Message *app_message_initByJson(char *json);

/**
 * @brief 将消息转换为二进制数据
 * @param message 消息结构体指针
 * @param binary 接收到的二进制数据的指针
 * @param len 数据长度
 * @return 0:成功 返回长度len，-1:失败
 */
int app_message_toBinary(Message *message, char *binary, int len);

/**
 * @brief 将消息转换为json数据
 * @param message 消息结构体指针
 * @param json 接收到的json数据的指针
 * @param len 数据长度
 * @return 0:成功，-1:失败
 */
int app_message_toJson(Message *message, char *json, int len);

/**
 * @brief 释放消息
 * @param message 消息结构体指针
 * @return void
 */
void app_message_free(Message *message);

#endif // APP_MESSAGE_H
